package com.briup.smartcity_group1.service;

import com.briup.smartcity_group1.bean.basic.Carousel;
import com.github.pagehelper.PageInfo;
import com.briup.smartcity_group1.exception.ServiceException;

import java.util.List;

/**
* 轮播图相关接口
*/
public interface ICarouselService {

    /**分页查询轮播图信息
     * @param pageNum 页码
     * @param pageSize  单页的记录数
     * @return  轮播图页面信息
     */
    PageInfo<Carousel> findAllByPage(int pageNum, int pageSize);

    /** 根据 id 删除轮播图
     * @param id 轮播图 id
     * 当轮播图状态为启用状态时，提示用户无法删除正在启用的轮播图。
     * 当轮播图总数为1张时，提示用户无法全部删除全部轮播图，最少有一张轮播图存在。
     * @throws ServiceException 要删除的轮播图正在启用，只有一张轮播图，要删除的轮播图不存在
     */
    void deleteById(Integer id);

    /**保存轮播图信息
     * 新增轮播图默认状态为禁用状态
     * 不能添加重复的轮播图地址
     * @param carousel 要保存的轮播图
     */
    void saveCarousel(Carousel carousel);


    /**更新轮播图信息
     * <p>1.当用户点击修改轮播图，可以根据轮播图id修改轮播图名称 地址 和描述信息
     * 2.当用户修改轮播图状态时，只提供轮播图id和轮播图状态信息
     * 3.系统中保证最小有一个轮播图处于开启状态
     * 4. 除 id 外，其他属性都可为 null</p>
     * @param carousel 更新轮播图信息
     */
    void updateCarousel(Carousel carousel);

    /**查询所有已经启用的轮播图
     * @return 所有已经启用的轮播图
     */
    List<Carousel> findYesCarousel();
}
